package com.itheima.doudizhu;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class 斗地主 {
    public static void main(String[] args) {
        //先创建两个String数组;
        String[] color = {"♥", "♦", "♠", "♣"};
        String[] num = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
        //创建两个集合,一个是双列集合HashMap,一个单列集合ArrayList;
        HashMap<Integer, String> map = new HashMap<>();
        ArrayList<Integer> list = new ArrayList<>();
        //定义一个计数器变量;
        int count = 1;
        //遍历数组,将数组里面的内容添加到集合当中;
        for (String s : num) {
            for (String s1 : color) {
                map.put(count, s + s1);
                list.add(count);
                count++;
            }
        }
        //村放大小王;
        map.put(count, "小王");
        list.add(count);
        count++;
        map.put(count, "大王");
        list.add(count);
        //洗牌;
        Collections.shuffle(list);
        //发牌;
        //因为是三个用户在玩,并且还有一个底牌,所以需要创建四个集合来存放牌;
        ArrayList<Integer> list01 = new ArrayList<>();
        ArrayList<Integer> list02 = new ArrayList<>();
        ArrayList<Integer> list03 = new ArrayList<>();
        ArrayList<Integer> list04 = new ArrayList<>();
        //将牌添加到每一个集合当中;
        //因为底牌还有三张,所以需要留有三张牌,所以在集合的长度上面减去一个三;
        for (int i = 0; i < list.size() - 3; i++) {
            //获取,每一个元素;
            Integer pai = list.get(i);
            //进行判断,因为有三个玩家在玩,所以%3==0就是一个循环;
            if (i % 3 == 0) {
                list01.add(pai);
            } else if (i % 3 == 1) {
                list02.add(pai);
            } else {
                list03.add(pai);
            }
        }
        //牌添加完成后将三张底牌添加到list04当中;
        for (int i = list.size()-3; i < list.size(); i++) {
            Integer pai = list.get(i);
            list04.add(pai);
        }
        //牌发完之后对牌进行一个排序;
        Collections.sort(list01);
        Collections.sort(list02);
        Collections.sort(list03);
        Collections.sort(list04);
        //看牌;
        //调用看牌的方法;
        method("一号玩家:",list01,map);
        method("二号玩家:",list02,map);
        method("三号玩家:",list03,map);
        method("底牌:",list04,map);

    }
    //创建一个看牌的方法;
    public static void method(String name , ArrayList<Integer> list ,HashMap<Integer,String > map){
        //先打印一个换行;
        //获取集合中的元素,因为集合中的元素就是hashmap中的key,所以通过key获取map集合中的value;
        System.out.print(name+"");
        for (Integer i : list) {
            String pai = map.get(i);
            System.out.print(pai+" ");
        }
        System.out.println();

    }
}
